// log.js 修改后代码
var source = null;
var fullLogs = []; // 存储完整日志
var displayedLogs = 0; // 已显示日志计数

// 初始化日志系统
function initLogSystem() {
    fullLogs = [];
    displayedLogs = 0;
    document.getElementById('log').innerHTML = '';
    document.getElementById('downloadBtn').style.display = 'none';
}


// 下载日志处理
function handleDownload() {
    const blob = new Blob([fullLogs.join('\n')], {type: 'text/plain'});
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = `zentao_log_${new Date().toISOString().slice(0,10)}.txt`;
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
}

// 显示下载按钮
function showDownloadButton() {
    const btn = document.getElementById('downloadBtn');
    btn.style.display = 'inline-block';
    btn.onclick = handleDownload;
}

// 日志处理核心逻辑
function processLogMessage(event) {
    // 存储原始日志
    fullLogs.push(event.data);
    
    // 限制显示数量
    const logElem = document.getElementById("log");
    let formattedMessage = event.data;
    
    // 颜色标记（保持原有逻辑）
    if (event.data.indexOf("新增失败") !== -1 ||
        event.data.indexOf("更新失败") !== -1 ||
        event.data.indexOf("删除失败") !== -1) {
        formattedMessage = '<span style="color: red;">' + event.data + '</span>';
    } else if (event.data.indexOf("新增成功") !== -1) {
        formattedMessage = '<span style="color: green;">' + event.data + '</span>';
    } else if (event.data.indexOf("更新成功") !== -1) {
        formattedMessage = '<span style="color: blue;">' + event.data + '</span>';
    } else if (event.data.indexOf("删除成功") !== -1) {
        formattedMessage = '<span style="color: purple;">' + event.data + '</span>';
    }
    
    // 控制显示数量
    if (displayedLogs >= 500) {
        const firstChild = logElem.firstChild;
        if (firstChild) {
            logElem.removeChild(firstChild);
            displayedLogs--;
        }
    }
    
    // 添加新日志
    const div = document.createElement('div');
    div.innerHTML = formattedMessage;
    logElem.appendChild(div);
    displayedLogs++;
    
    // 自动滚动
    logElem.scrollTop = logElem.scrollHeight;
    
    // 处理完成逻辑
    if (event.data.indexOf("操作完成") !== -1 || 
        event.data.indexOf("获取Token失败") !== -1) {
        source.close();
        showDownloadButton();
    }
}

// 初始化日志系统并启动
initLogSystem();
source = new EventSource("/stream");
source.onmessage = processLogMessage;